// 生成器函数
function* generator() {
  console.log(`start yield 1`)
  let a = yield 1
  console.log('end yield 1', a)

  console.log(`start yield 2`)
  let b = yield 2
  console.log(`end yield 2`, b)

  console.log(`start yield 3`)
  let c = yield 3
  console.log(`end yield 3`, c)

  return 'abc'
}

// 获取迭代器对象
let iterator = generator(123)

let next1 = iterator.next() //
console.log(next1) // { value: 1, done: false }

let next2 = iterator.next('222') // 执行生成器函数 并指定生成器函数第一个 yield 返回值
console.log(next2) // { value: 2, done: false }

let next3 = iterator.next('333') // 执行生成器函数 并指定生成器函数第二个 yield 返回值
console.log(next3) // { value: 3, done: false }

let next4 = iterator.next('444') // 执行生成器函数 并指定生成器函数第三个 yield 返回值
console.log(next4) // { value: 'abc', done: true } 返回的对象中 done 的值为 true 代表迭代完毕
